import java.util.Scanner;

public class Day_Thirteen {


    //重排字符串（贪心+构造）
    //链接：https://ac.nowcoder.com/acm/problem/222104
    //来源：牛客网
    //
    //小红拿到了一个只由小写字母组成的字符串。她准备把这个字符串重排（只改变字母的顺序，不改变数量）
    //重排后小红想让新字符串不包含任意两个相同的相邻字母。
    //你能帮帮她吗？
    //输入描述:
    //第一行一个正整数n ，代表字符串的长度(1≤n≤10^5)
    //第二行为一个长度为n 的、只由小写字母组成的字符串。
    //输出描述:
    //如果可以完成重排，请在第一行输出一个“yes”，第二行输出重排后的字符串。如果有多个正解，输出任意即可。
    //如果不能重排，则直接输出“no”
    //示例1
    //输入
    //5
    //aaaaa
    //输出
    //no

    //示例2
    //输入
    //7
    //aabbccc
    //输出
    //yes
    //cabcabc
    //说明
    //bcbcaca也是正确答案（正确答案还有很多，输出任意即可）
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int n= s.nextInt();
        char[] ch = s.next().toCharArray();
        char maxChar = '0';
        int maxCount = 0;
        int[] hash = new int[26];

        for (int i = 0; i < n; i++) {
            char c= ch[i];
            if (++hash[c - 'a'] >maxCount){
                maxChar = c;
                maxCount = hash[c - 'a'];
            }
        }

        if (maxCount >(n+1)/2){
            System.out.println("no");
        }else{
            System.out.println("yes");
            char[] ret = new char[n];
            int i = 0;
            while(maxCount-- != 0){
                ret[i] = maxChar;
                i+=2;
            }
            for (int j = 0; j < 26; j++) {
                if (hash[j] != 0 && (char)(j+'a') != maxChar){
                    while(hash[j]-- !=0){
                        if(j>=n){
                            i = 1;
                        }
                        ret[i] = (char)(j+'a');
                        i+=2;
                    }
                }
            }
            for (int j = 0; j < n; j++) {
                System.out.print(ret[j]);
            }
        }
    }


    //最长无重复子数组
    //给定一个长度为n的数组arr，返回arr的最长无重复元素子数组的长度，无重复指的是所有数字都不相同。
    //子数组是连续的，比如[1,3,5,7,9]的子数组有[1,3]，[3,5,7]等等，但是[1,3,7]不是子数组
    //数据范围：0≤arr.length≤10^5,0<arr[i]≤10^5
    //示例1
    //输入：
    //[2,3,4,5]
    //返回值：
    //4
    //说明：
    //[2,3,4,5]是最长子数组

    //示例2
    //输入：
    //[2,2,3,4,3]
    //返回值：
    //3
    //说明：
    //[2,3,4]是最长子数组

    //示例3
    //输入：
    //[9]
    //返回值：
    //1

    //示例4
    //输入：
    //[1,2,3,1,2,3,2,2]
    //返回值：
    //3
    //说明：
    //最长子数组为[1,2,3]

    //示例5
    //输入：
    //[2,2,3,4,8,99,3]
    //返回值：
    //5
    //说明：
    //最长子数组为[2,3,4,8,99]
    public int maxLength(int[] arr){
        int[] hash = new int[100010];
        int left = 0;
        int right = 0;
        int n = arr.length;
        int ret = 0;
        while(right < n){
            hash[arr[right]]++;
            while(hash[arr[right]]>1){
                hash[arr[left]]--;
                left++;
            }
            ret = Math.max(ret,right-left+1);
            right++;
        }
        return ret;
    }



    //牛牛冲钻五
    //链接：https://ac.nowcoder.com/acm/problem/227309
    //来源：牛客网
    //牛牛最近在玩炉石传说，这是一款一对一对战的卡牌游戏，牛牛打算努力冲上钻五分段，获得丰厚的天梯奖励。
    //炉石传说的段位可以用星数来表示，具体规则为：若牛牛本场失败，则扣除一星；
    // 若牛牛本场获胜，需要看牛牛是否触发了连胜奖励，若牛牛获得了至少三连胜（即本局对局的上一局和上上局都获胜）
    // 则获得k星，否则获得一星。
    //现在给出牛牛游玩的n场记录，请你判断牛牛最终的星数和初始星数的差。
    //输入描述:
    //第一行输入一个整数T(1≤T≤10^4)，测试组数。
    //每个测试的第一行输入两个整数n(3≤n≤10^5)和k(2≤k≤100)，牛牛共打了几场比赛与连胜奖励的星数。
    //接下来一行输入一个长为𝑛的字符串，之中W表示获胜，L表示失败，保证只含有这两种字母。
    //保证所有用例的Σn≤10^5。
    //输出描述:
    //对每个测试用例，输出一个整数，表示牛牛最终的星数和初始星数的差。
    //示例1
    //输入
    //2
    //5 3
    //WWWLW
    //5 3
    //WLLLL
    //输出
    //5
    //-3
    public static void main1(String[] args) {
        Scanner s = new Scanner(System.in);

        int t = s.nextInt();
        while (t--!= 0){
            int n = s.nextInt();
            int k = s.nextInt();
            char[] ch = s.next().toCharArray();

            int ret = 0;
            for (int i = 0; i < ch.length; i++) {
                if (ch[i] == 'L') {
                    ret -=1;
                }else{
                    if (i-1>=0 && i-2>=0 && ch[i-1] =='W' && ch[i-2] == 'W'){
                        ret +=k;
                    }else{
                        ret +=1;
                    }
                }
            }
            System.out.println(ret);
        }
    }
}
